const _ = require('lodash')
const rawSettings = require('../../../settings')
const SaveDataMgr = require('../../../src/lib/save-data/manager')

/**
 *  list 命令
 */
function listHandler(program) {
  program
    .command('list [gameName]')
    .description('查看所有游戏存档配置')
    .option('-s, --simple', '只查看游戏存档名称', false)
    .option('-o, --open', '打开文件', false)
    .option('-r, --reset', '重置游戏存档配置', false)
    .action(async (gameName, options) => {
      // 过滤游戏名称
      let settings = gameName ? _.pick(rawSettings, [gameName]) : rawSettings

      // 只查看游戏名称
      if (options.simple) {
        Object.keys(settings).forEach((name, idx) => {
          console.log(`${idx + 1}.${name}`)
        })
        return
      }

      // 重置游戏存档
      if (options.reset) {
        settings = SaveDataMgr.clearSettings(gameName)
      }

      // 打印游戏存档配置
      console.table(settings)

      // 打开文件
      if (options.open) {
        SaveDataMgr.openSettingsFile()
      }
    })
}

module.exports = listHandler
